在 E2E 測試中,因為要真正的整合前後端進行測試,所以難免會遇到登入之類的問題。
如果要在每個 test 去進行登入,會是非常沒有效率的行為。
這時候就可以搭配 globalSetup
來進行登入、並將登入後的 localStorage
存下來。
再搭配 PlaywrightTestConfig.use.storageState
設定,將存下的狀態灌入每個測試之中,這樣就可以做到在開始測試時登入一次,爾後的每個 test 都保有登入狀態了。
當然這是因為我們的登入狀態是透過 token 保存在 localStorage
,如果你的專案不是這樣設計的,那就要再進行調整囉。
// playwright.config.ts
import type { PlaywrightTestConfig } from '@playwright/test'
const config: PlaywrightTestConfig = {
testDir: 'playwright',
timeout: 60 * 1000,
retries: 1,
globalSetup: './playwright/global-setup',
globalTeardown: './playwright/global-teardown',
use: {
storageState: './playwright/storageState.json',
},
}
export default config
// playwright/global-setup.ts
import { chromium } from '@playwright/test'
import { login } from './common'
async function globalSetup() {const browser = await chromium.launch()
const page = await browser.newPage()
await login(page)
await page.context().storageState({ path: storageStatePath })
await browser.close()
}
export default globalSetup